package Tests;


 public class Control {
	
	 Evento rootControl = new Evento();
	 Control(){
		 
		 rootControl.setTime(0.0);
		 Init();
	 }
	 public void Init(){
		rootControl.izquierdo = rootControl;
		rootControl.derecho = rootControl;
		rootControl.anterior = rootControl;
		rootControl.siguiente = rootControl;
		
		 Segmento segmento1 = new Segmento(rootControl);
		 segmento1.agregarEvento(3.0);
		 segmento1.agregarEvento(10.0);
		 segmento1.agregarEvento(5.0);
		 segmento1.agregarEvento(20.0);
		 System.out.println(rootControl.derecho.getTime());
		 sacarEvento();
		 System.out.println(rootControl.derecho.getTime());
		 sacarEvento();
		 System.out.println(rootControl.derecho.getTime());
		 sacarEvento();
		 System.out.println(rootControl.derecho.getTime());
	 }
	 public static void main(String[] args){
		 Control control =new Control();
		 		 
	 }
	 public Evento sacarEvento(){
		 Evento proximoEvento = rootControl.derecho;
		 Evento z = null;
		 Evento x = rootControl.derecho.siguiente;
		 //se saca el evento del circulo
		 if(x != x.siguiente){ //nos aseguramos que no sea el SQS del segmento
			z= rootControl.derecho;	
			 
				
				if(z.getTime() < x.getTime()){

					while(x.getTime() > z.getTime() && z != rootControl)
						z = z.derecho;

				}else{
					while(x.siguiente.getTime() < z.getTime() && z.izquierdo != rootControl)
						z = z.izquierdo;
				}
				
				x.eventoPotencial = true;
				//hay que poner el evento despues de z
				
				
				x.izquierdo = z.izquierdo;
				z.izquierdo = x;
				x.izquierdo.derecho = x;
				x.derecho = z;

				
				
		 }
		 	//sacamos al proximo evento del circulo
		 	proximoEvento.izquierdo.derecho = proximoEvento.derecho;
			proximoEvento.derecho.izquierdo =proximoEvento.izquierdo;
			proximoEvento.derecho = null;
			proximoEvento.izquierdo = null;
		 
			return proximoEvento;
	 }
}
